package com.demo.structural.composite;

/**
 * 组合模式
 * 组合模式用于将多个对象组合成树形结构以表示“整体-部分”的结构层次。组合模式对单个对象（叶子对象）和组合对象（容器对象）的使用具有一致性。
 * 关键在于它定义了一个抽象构建类，它既可表示叶子对象，也可表示容器对象，客户仅仅需要针对这个抽象构建进行编程，无须知道他是叶子对象还是
 * 容器对象，都是一致对待。最好的例子就是各种文件和文件夹的例子，它们都属于文件，都将实现同一接口，统一对待。
 * @author allen
 *
 */
public class Test { 
	
	public static void main(String[] args) {
		//新建多个文件夹
		File foldera = new Folder();
		File folderb = new Folder();
		//新建多个文件
		File imageFile = new ImageFile();
		File textFile = new TextFile();
		//文件夹可以添加文件夹、文件
		foldera.addChild(folderb);
		foldera.addChild(textFile);
		//文件自身不可以添加文件或者文件夹
		textFile.addChild(imageFile); 
		
	}
}
